02c0ff21a09b9178bd5b73d18ce2d11cf8da5c79,src/main/java/htsjdk/samtools/SAMRecordUtil.java,SAMRecordUtil,reverseComplement,#SAMRecord#Collection#Collection#,54

Before Change


                        value = StringUtil.reverseString((String) value);
                    }
                    else if (value.getClass().isArray()) {
                        if (value instanceof byte[]) reverseArray((byte[]) value);
                        else if (value instanceof short[]) reverseArray((short[]) value);
                        else if (value instanceof int[]) reverseArray((int[]) value);
                        else if (value instanceof float[]) reverseArray((float[]) value);

After Change


        final byte[] readBases = unsafe ? rec.getReadBases() : rec.getReadBases().clone();
        SequenceUtil.reverseComplement(readBases);
        rec.setReadBases(readBases);
        final byte qualities[] = unsafe ? rec.getBaseQualities() : rec.getBaseQualities().clone();
        reverseArray(qualities);
        rec.setBaseQualities(qualities);

        // Deal with tags that need to be reverse complemented
        if (tagsToRevcomp != null) {
            for (final String tag: tagsToRevcomp) {
                Object value = rec.getAttribute(tag);
                if (value != null) {
                    if (value instanceof byte[]) {
                        value = unsafe ? value : ((byte[]) value).clone();
                        SequenceUtil.reverseComplement((byte[]) value);
                    }
                    else if (value instanceof String) {
                        value = SequenceUtil.reverseComplement((String) value);
                    }
                    else throw new UnsupportedOperationException("Don't know how to reverse complement: " + value);
                    rec.setAttribute(tag, value);
                }
            }
        }

        // Deal with tags that needed to just be reversed
        if (tagsToReverse != null) {
            for (final String tag : tagsToReverse) {
                Object value = rec.getAttribute(tag);
                if (value != null) {
                    if (value instanceof String) {
                        value = StringUtil.reverseString((String) value);
                    }
                    else if (value.getClass().isArray()) {
                        if (value instanceof byte[]) {
                            value = unsafe ? value : ((byte[]) value).clone();
                            reverseArray((byte[]) value);
                        }
                        else if (value instanceof short[]) {
                            value = unsafe ? value : ((short[]) value).clone();